perm filename OO2.FAI[RST,LCS] blob
sn#176529 filedate 1975-09-11 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00011 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE OO
C00004 00003 RST: RESET
C00005 00004 INTY: HRRZI N,MEM+1
C00006 00005 EVAL: HRRZI MA,1
C00010 00006 BACK: HRRZI 6,-2(CX)
C00013 00007 GETO: SKIPN OU ??
C00015 00008 INTRU: MOVE EN,JOBCNI
C00019 00009 SAVIT: HRRZM 6,FIXFLG
C00021 00010 OUTINT: HRRZI 6,.+3
C00023 00011 TABL: REPEAT 7,{JFCL↔}
C00025 ENDMK
C⊗;
TITLE OO
EXTERNAL JOBAPR,JOBTPC,JOBCNI,JOBFF,JOBREL,JOBDDT,$I
A←1 ↔ B←2 ↔ FL←4 ↔ EN←7 ↔ TS←10 ↔ OU←11
CX←13 ↔ MA←14 ↔ N←15 ↔ P←17 ↔ MEM←17000
INT: HRRZI EN,INTRU
HRRZM EN,JOBAPR
FILIN: HRRZI EN,MEM+200
CORE EN,
HALT
OPEN DEVN
JRST ERRO
MOVE 6,PPN
MOVEM 6,IFNAM+3
LOOKUP IFNAM
JRST ERRO
MOVE EN,INPO
SETZ TS,
INPUT EN
HRRZ EN,MEM
HRRZI N,MEM(EN)
HRRM N,INTY
SOS INTY
CORE N,
JRST ERRO
SUBI EN,200
JUMPLE EN,RST
IORI EN,177
MOVNS EN
HRLZI EN,-1(EN)
HRRI EN,MEM+177
INPUT EN
JRST RST
ERRO: OUTSTR QMARK
JRST RST
FILO: MOVE 6,TMP
MOVEM 6,(N)
AOJ N,
SUBI N,MEM
HRRZM N,MEM
IORI N,177
MOVNS N
HRLZI N,-1(N)
HRRI N,MEM-1
OPEN DEVN
JRST ERRO
SETZM OFNAM+3
ENTER OFNAM
JRST ERRO
SETZ 16,
OUTPUT N
RELEAS
RST: RESET
SETZM PTNUM
MOVE P,PDPO
MOVE EN,IPC
INTENB EN,
OUTSTR CRLF
HRRZ N,INTY
MOVE OU,(N)
MOVEM OU,TMP
TLNN OU,777777
SKIPA OU,(OU)
ADD OU,ONEB
HRRZI TS,(N)
PUSHJ P,GETO
LOOP: PUSHJ P,INTY
PUSHJ P,EVAL
PUSHJ P,GETO
JRST LOOP
INTY: HRRZI N,MEM+1
HRRZI TS,(N)
SKIPN PTOFL
OUTSTR ASTR
IWAIT
INCHRS EN
JRST .-2
INLIN: HRRZM EN,(TS)
SETZM 1(TS)
ADDI TS,2
INCHRS EN
CAIA
JRST INLIN
SKIPL OU,LITFLG
JRST (OU)
POPJ P,
LITCK: CAME EN,LITCHR
JRST INTY+4
SETOM LITFLG
POPJ P,
STLIT: SKIPL FIXFLG
POPJ P,
IWAIT
INCHRS LITCHR
JRST .-2
SUBI TS,2
HRRZI 6,LITCK
HRRZM 6,LITFLG
HRRZI 6,POPS
HRRZM 6,FIXFLG
SUB P,TWOB
PUSH P,RETRN
JRST INTY+4
EXCT: HLRZ 6,6
XCT TABL(6)
JRST CKEX1+2
EVAL: HRRZI MA,1
HRRZI CX,(N)
JRST BGIN
MVM: HRLI OU,400000(MA)
HRRZI 6,2
JRST LMVM
LAEQ: HRRZI 6,2
CAIE OU,(MA)
ADDI 6,2
SUBI 5,2
HLL OU,(5)
LMVM: MOVEM OU,(5)
SETZM 1(5)
ADDI 5,2
SUBI TS,(6)
ADDI 6,(5)
HRLZI 6,(6)
HRRI 6,(5)
BLT 6,(TS)
JRST LKMO
FDEQ: MOVE 4,MEM(MA)
HRRZI 5,(N)
LKMO: CAMN 4,(5)
JRST EQU
ADIN: ADDI 5,2
CAIGE 5,(TS)
JRST LKMO
ADDI MA,2
BGIN: CAIGE MA,-MEM(N)
JRST FDEQ
HRRZI MA,-MEM(CX)
ADDI N,2
CAIGE N,(TS)
JRST FDEQ
JRST BACK
EQU: HRRZI OU,(MA)
CAILE TS,2(5)
CAIG N,MEM+2(MA)
JRST CKLA
MOVE 6,MEM+2(MA)
CAMN 6,2(5)
HRRI OU,2(MA)
CKLA: CAIL 5,2(N)
SKIPL 6,-2(5)
JRST .+3
CAIN MA,2(6)
JRST LAEQ
CAIE OU,(MA)
JRST MVM
SKIPL 1(5)
SKIPN 6,MEM+1(OU)
JRST ADIN
CKEX1: TRNN 6,777777
JRST EXCT
HRLI OU,400001(OU)
AOJ OU,
MOVEM OU,1(5)
DOUT: CAIGE CX,-2(TS)
JRST ADIN
BACK: HRRZI 6,-2(CX)
ADDI 6,2
SKIPGE 1(6)
JRST NEGA+1
SKIPGE OU,(6)
AOBJN OU,NEGA
HRRZI OU,-MEM(6)
HRLI OU,400000(OU)
NEGA: MOVEM OU,1(6)
CAIGE 6,-2(TS)
JRST BACK+1
CAIE TS,2(CX)
JRST NOT1
SUBI TS,2
MOVE EN,(TS)
SUB OU,ONEB
CAME OU,EN
CAIN CX,MEM(OU)
AOBJN OU,NEW1
SKIPL FL,FIXFLG
AOBJN OU,FIXIT
HRRZI EN,MEM+1(OU)
ADD OU,ONEB
CKSAV: SKIPN SAVFLG
POPJ P,
HRRM TS,INTY
MOVEM EN,TMP
POPJ P,
NEW1: SKIPGE FL,FIXFLG
JRST CKSAV
HRRZI OU,-MEM+1(CX)
HRLI OU,400000(OU)
JRST ADTS
NOT1: HRRZI EN,-MEM-2(TS)
HRLI EN,400000-MEM(CX)
MOVE OU,EN
ADD OU,ONEB
SKIPGE FL,FIXFLG
JRST CKSAV
MOVEM EN,(TS)
MOVEM OU,1(TS)
HRRZI OU,-MEM+1(TS)
HRLI OU,400000(OU)
ADTS: ADDI TS,2
FIXIT: SKIPL EN,TMP
JRST CKFLS
MOVEM EN,(TS)
HRRZI EN,1(TS)
ADDI TS,2
CKFLS: PUSHJ P,(FL)
SETOM FIXFLG
JRST CKSAV
GETO: SKIPN OU ;??
POPJ P,
SKIPL PTOFL
OUTSTR SPACE
TLZN OU,400000
TRNN OU,400000
JRST GOUT
MOVE EN,OU
HRRZI 4,777775
JRST MKOUT
PUDO: HRLI OU,(4)
PUSH TS,OU
MOVE OU,EN
GOUT: HLRZ 4,OU
MOR: MOVE EN,MEM(4)
TLZE EN,400000
JRST PUDO
TRNE EN,400000
JRST MKOUT
SKIPE PTOFL
JRST PTOUT
OUTCHR EN
ADO: ADDI 4,2
CAIG 4,(OU)
JRST MOR
TLNN TS,777777
JRST TYOUT
POP TS,OU
HLRZ 4,OU
JRST ADO
PTOUT: TLNE EN,777777
JRST ADO
MOVE 6,PTNUM
PTWR1W 6
JRST ADO
MKOUT: HLRZ 6,EN
HRLI EN,(EN)
TRZ EN,400000
MOVEM EN,MEM(6)
JRST ADO
TYOUT: SKIPGE PTOFL
JRST PTOCR
OUTSTR CRLF
POPJ P,
PTOCR: TLNE EN,777777
POPJ P,
HRRZI 6,CRLFP
JRST POST
INTRU: MOVE EN,JOBCNI
TLNE EN,20000
DISMIS
IMSKCL 1,EN
MOVE OU,JOBTPC
TRNE EN,20000
JRST CORUP
HRRZI 5,(OU)
CAIE 5,.+7
MOVEM OU,IPC+1
UWAIT
DEBREAK
HRRZ 1,PTNUM
POLO: PTOCNT 1
SKIPG 2
INTJEN IPC
HRRZI 2,PTNUM+2
PTRDS 1
OUTSTR (2)
JRST POLO
CORUP: SOJ OU,
MOVEM OU,IPC+1
UWAIT
DEBREAK
HRRZ 1,JOBREL
AOJ 1,
CORE 1,
JRST TABL+77
INTJEN IPC
PTBEG: SKIPN PTNUM
PTYGET PTNUM
POPJ P,
HRLZI 6,4
PTGETL PTNUM
ORM 6,PTNUM+1
PTSETL PTNUM
HRRZI 6,5
HRRZM 6,PTNUM+1
PTJOBX PTNUM
POPJ P,
SETON: SETOM PTOFL
OUTSTR CRLFD
POPJ P,
PTEND: SKIPN PTNUM
POPJ P,
PTYREL PTNUM
SETZM PTNUM
PTOFF: SETZM PTOFL
OUTSTR CRLF
POPJ P,
PTON: SKIPE PTNUM
JRST SETON
POPJ P,
PTCALL: SKIPN PTNUM
POPJ P,
HRRZI 6,CALLC
POST: HRRZM 6,PTNUM+1
PTWRS9 PTNUM
POPJ P,
SAVIT: HRRZM 6,FIXFLG
OUTSTR CRLF
FIXTS: SUBI TS,2
MOVE OU,-1(TS)
SUB P,ONEB
JRST DOUT
CRFIX: CAIGE 5,-2(TS)
POPJ P,
JRST FIXTS
INDER: HRRZI 6,.+2
JRST SAVIT
MOVEM OU,(EN)
POPJ P,
LITA: HRRZI 6,.+2
JRST SAVIT
SUB OU,ONEB
MOVEM OU,(EN)
POPJ P,
RPLACE: HRRZI 6,.+2
JRST SAVIT
HRR OU,MEM(OU)
TLZ OU,400000
TRO OU,400000
MOVEM OU,(EN)
POPJ P,
ADER: HRRZI 6,.+2
JRST SAVIT
MOVE 4,MEM-1(OU)
MOVEM 4,2(TS)
CAIE TS,1(OU)
JRST OLD1
SUBI TS,2
MOVE OU,(OU)
OLD1: MOVEM OU,3(TS)
MOVE 5,(EN)
MOVE 4,MEM-1(5)
MOVEM 4,(TS)
MOVEM 5,1(TS)
HRRZI OU,-MEM+2(TS)
HRLI OU,400000-MEM(TS)
MOVEM OU,4(TS)
AOBJP OU,
MOVEM OU,5(TS)
HRRZI OU,-MEM+5(TS)
HRLI OU,400000(OU)
MOVEM OU,(EN)
ADDI TS,6
POPJ P,
NDIRT: HRRZI 6,.+2
JRST SAVIT
MOVE OU,MEM(OU)
MOVEM OU,(EN)
POPJ P,
OUTINT: HRRZI 6,.+3
HRRZM 6,FIXFLG
POPJ P,
HRRZI B,7
JUMPE OUTZ
IDIVI =10
ADDI A,60
HRRZM A,BLK(B)
SOJGE B,OUTINT+4
OCHR: OUTCHR BLK+1(B)
CAIGE B,6
AOJA B,OCHR
POPJ P,
OUTZ: CAIL B,7
HRLZI B,300000
JRST OCHR
BLK: BLOCK 20
GLSTV: PUSHJ P,GLSTA
MOVE VAL(A)
POPJ P,
GNXTV: PUSHJ P,GNXTA
MOVE VAL(A)
POPJ P,
GLSTA: SKIPGE A,-1(5)
SKIPL A,MEM(A)
CAIA
JRST .-2
SKIPN A
SKIPL A,-2(5)
POPJ P,
JRST GLSTV+1
GNXTA: SKIPN A,3(5)
SKIPG A,2(5)
SKIPL A
POPJ P,
HLRZ A,A
MOVE A,MEM+400000(A)
JRST GNXTA+2
ADIT: PUSHJ P,GLSTV
PUSHJ P,GNXTA
ADD VAL(A)
POPJ P,
SUBIT: PUSHJ P,GLSTV
PUSHJ P,GNXTA
SUB VAL(A)
POPJ P,
VAL: BLOCK 101 ↔ 2 ↔ 2 ↔ BLOCK 76
TABL: REPEAT 7,{JFCL↔}
JRST RST
PUSHJ P,GLSTA
PUSHJ P,GNXTA
PUSHJ P,GLSTV
PUSHJ P,GNXTV
PUSHJ P,OUTINT
PUSHJ P,CRFIX
REPEAT 24,{JFCL↔}
PUSHJ P,STLIT
REPEAT 10,{JFCL↔}
PUSHJ P,ADIT
PUSHJ P,PTOFF
PUSHJ P,SUBIT
PUSHJ P,PTON
REPEAT 13,{JFCL↔}
PUSHJ P,INDER
REPEAT 4,{JFCL↔}
JSR $I
PUSHJ P,NDIRT
PUSHJ P,ADER
JFCL
PUSHJ P,PTCALL
REPEAT 2,{JFCL↔}
PUSHJ P,FILIN
REPEAT 4,{JFCL↔}
PUSHJ P,PTEND
PUSHJ P,LITA
JFCL
SETZM SAVFLG
PUSHJ P,FILO
PUSHJ P,PTBEG
JFCL
PUSHJ P,RPLACE
SETOM SAVFLG
REPEAT 53,{JFCL↔}
POPS: POPJ P, ↔ PDPO: IOWD 100,PDL
PDL: BLOCK 100 ↔ PTOFL: 0
IPC: 21000,,20000 ↔ 0 ↔ PPN: 'CMSLCS'
DEVN: 17 ↔ SIXBIT/DSK/ ↔ 0
IFNAM: SIXBIT/ALY/ ↔ SIXBIT/OOP/ ↔ BLOCK 2
OFNAM: SIXBIT/LAST/ ↔ SIXBIT/OOP/ ↔ BLOCK 2
INPO: IOWD 200,MEM ↔ QMARK: 45767706424
CRLF: 64240,,0 ↔ ASTR: ASCIZ/*/
SPACE: ASCIZ/ / ↔ CALLC: 600600,,0
CRLFP: 015012,, ↔ FIXFLG: -1
CRLFD: 64245,,600000
TMP: 0 ↔ SAVFLG: -1
LITFLG: -1 ↔ LITCHR: LITCK
ONEB: 1,,1 ↔ TWOB: 2,,2
RETRN: LOOP+1 ↔ PATCH: BLOCK 100
PTNUM: 0 ↔ BLOCK 400
END INT